home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 April: Mac OS SDK / Dev.CD Apr 98 SDK1.toast / Development Kits (Disc 1) / PC Card SDKs / PC Card Manager 3.0 / CIncludes / PCCardAdapterPlugin.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-06-05  |  8.2 KB  |  195 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        PCCardAdapterPlugin.h
  3.  
  4.      Contains:    PC Card Socket Service Plug-In Programming Interface
  5.  
  6.      Version:    System 7.5 and System 8
  7.  
  8.      DRI:        Dave Falkenburg
  9.  
  10.      Copyright:    © 1984-1996 by Apple Computer, Inc.
  11.                  All rights reserved.
  12.  
  13.      Warning:    *** APPLE INTERNAL USE ONLY ***
  14.                  This file may contain unreleased API's
  15.  
  16.      BuildInfo:    Built by:            Dave Falkenburg
  17.                  With Interfacer:    2.0d13   (PowerPC native)
  18.                  From:                PCCardAdapterPlugin.i
  19.                      Revision:        16
  20.                      Dated:            12/13/96
  21.                      Last change by:    DRF
  22.                      Last comment:    Changed RegEntryRef -> RegEntryID to make SDK work with current
  23.  
  24.      Bugs:        Report bugs to Radar component “System Interfaces”, “Latest”
  25.                  List the version information (from above) in the Problem Description.
  26.  
  27. */
  28. #ifndef __PCCARDADAPTERPLUGIN__
  29. #define __PCCARDADAPTERPLUGIN__
  30.  
  31. #ifndef __TYPES__
  32. #include <Types.h>
  33. #endif
  34. #ifndef __NAMEREGISTRY__
  35. #include <NameRegistry.h>
  36. #endif
  37. #ifndef __INTERRUPTS__
  38. #include <Interrupts.h>
  39. #endif
  40. #ifndef __PCCARD__
  41. #include <PCCard.h>
  42. #endif
  43.  
  44. #ifdef __cplusplus
  45. extern "C" {
  46. #endif
  47.  
  48. #if PRAGMA_IMPORT_SUPPORTED
  49. #pragma import on
  50. #endif
  51.  
  52. #if PRAGMA_ALIGN_SUPPORTED
  53. #pragma options align=power
  54. /* the following contents can only be used by compilers that support PowerPC struct alignment */
  55.  
  56. /*    Copyright:    © 1996 SystemSoft Corporation, all rights reserved. */
  57. #if FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE
  58. /*
  59. ------------------------------------------------------------------------------------
  60.   Types
  61. ------------------------------------------------------------------------------------
  62. */
  63. /*    Interrupt Status Change bits*/
  64.  
  65. enum {
  66.     kSCBatteryDead                = 0x01,                            /* Battery Dead Status Change*/
  67.     kSCBatteryLow                = 0x02,                            /* Battery Warning Status Change*/
  68.     kSCReady                    = 0x04,                            /* Ready Status Change*/
  69.     kSCCardDetect                = 0x08,                            /* Card Detect Status Change*/
  70.     kSCCardEjected                = 0x10,                            /* Card Ejected*/
  71.     kSCStatusChange                = 0x20,                            /* PC Card Status Change Signal Asserted*/
  72.     kSCRingIndicate                = 0x40                            /* PC Card Ring Indicate Signal Asserted*/
  73. };
  74.  
  75. /*    IRQ bits */
  76.  
  77. enum {
  78.     kIRQLevelMask                = 0x1F,
  79.     kIRQInvalid                    = 0x20,
  80.     kIRQHigh                    = 0x40,
  81.     kIRQEnable                    = 0x80
  82. };
  83.  
  84. /*    bits for adapter characteristics flags*/
  85.  
  86. enum {
  87.     SS_ADPT_FLG_IND                = 0x01,                            /* indicators for write-protect, card lock,*/
  88.                                                                 /* battery status, busy status, and XIP*/
  89.                                                                 /* are shared for all sockets*/
  90.     SS_ADPT_FLG_PWR                = 0x02,                            /* if set indicates that the sockets*/
  91.                                                                 /* share the same power control*/
  92.     SS_ADPT_FLG_DBW                = 0x04,                            /* all windows on the adapter must use*/
  93.                                                                 /* the same Data Bus Width*/
  94.     SS_ADPT_FLG_CARDBUS            = 0x08,                            /* all sockets are CardBus PC Card capable*/
  95.     SS_ADPT_FLG_DMA                = 0x10,                            /* the adapter has DMA capability*/
  96.                                                                 /*    bits for adapter power characteristics*/
  97.     SS_ADPT_FLG_V33                = 0x20,                            /* adapter supports 3.3 volt power to socket*/
  98.     SS_ADPT_FLG_V50                = 0x40,                            /* adapter supports 5.0 volt power to socket*/
  99.     SS_ADPT_FLG_V12                = 0x80                            /* adapter supports 12.0 volt power to socket*/
  100. };
  101.  
  102. /*
  103. ------------------------------------------------------------------------------------
  104.   Calls exported by the Family
  105. ------------------------------------------------------------------------------------
  106. */
  107. extern OSStatus CSReportStatusChange(const RegEntryID *adapterRef, PCCardSocket whichSocket, PCCardSCEvents statusChange, PCCardSocketStatus socketStatus);
  108.  
  109. /*
  110. ------------------------------------------------------------------------------------
  111.   Plugin Dispatch Table
  112. ------------------------------------------------------------------------------------
  113. */
  114. typedef OSStatus (*SSValidateHardwareProc)(const RegEntryID *deviceID);
  115. typedef OSStatus (*SSInitializeProc)(const RegEntryID *deviceID, Boolean replacingOldDriver);
  116. typedef OSStatus (*SSSuspendProc)(const RegEntryID *deviceID);
  117. typedef OSStatus (*SSResumeProc)(const RegEntryID *deviceID);
  118. typedef OSStatus (*SSFinalizeProc)(const RegEntryID *deviceID, Boolean beingReplaced);
  119. typedef OSStatus (*SSInquireAdapterProc)(ItemCount *numberOfSockets, ItemCount *numberOfWindows, ItemCount *numberOfBridgeWindow, PCCardAdapterCapabilities *capabilities);
  120. typedef OSStatus (*SSInquireSocketProc)(PCCardSocket socket, ItemCount *numberOfWindows, PCCardSocketStatus *supportedSocketStatus, PCCardSCEvents *supportedStatusChange);
  121. typedef OSStatus (*SSGetSocketProc)(PCCardSocket socket, PCCardVoltage *Vcc, PCCardVoltage *Vpp, PCCardVoltage *Vs, PCCardInterfaceType *socketIF, PCCardCustomInterfaceID *customIFID, PCCardSocketStatus *socketStatus, PCCardSCEvents *SCEventsMask, PCCardIRQ *IRQ, PCCardDMA *DMA);
  122. typedef OSStatus (*SSSetSocketProc)(PCCardSocket socket, PCCardVoltage Vcc, PCCardVoltage Vpp, PCCardInterfaceType socketIF, PCCardCustomInterfaceID customIFID, PCCardSocketStatus statusReset, PCCardSCEvents SCEventsMask, PCCardIRQ IRQ, PCCardDMA DMA);
  123. typedef OSStatus (*SSResetSocketProc)(PCCardSocket socket);
  124. typedef OSStatus (*SSGetStatusProc)(PCCardSocket socket, PCCardSocketStatus *currentStatus, PCCardSocketStatus *changedStatus);
  125. typedef OSStatus (*SSInquireWindowProc)(PCCardSocket *socket, PCCardWindow window, PCCardWindowState *windowState, PCCardWindowSize *windowSize, PCCardWindowAlign *windowAlign);
  126. typedef OSStatus (*SSGetWindowProc)(PCCardSocket *socket, PCCardWindow window, PCCardWindowState *windowState, PhysicalAddress *startAddress, PCCardWindowSize *windowSize, PCCardWindowOffset *windowOffset, PCCardAccessSpeed *memSpeed);
  127. typedef OSStatus (*SSSetWindowProc)(PCCardSocket socket, PCCardWindow window, PCCardWindowState windowState, PhysicalAddress startAddress, PCCardWindowSize windowSize, PCCardWindowOffset windowOffset, PCCardAccessSpeed memSpeed);
  128. typedef OSStatus (*SSGetWindowOffsetProc)(PCCardSocket *socket, PCCardWindow window, PCCardWindowState *windowState, PCCardWindowOffset *windowOffset);
  129. typedef OSStatus (*SSSetWindowOffsetProc)(PCCardSocket socket, PCCardWindow window, PCCardWindowState windowState, PCCardWindowOffset windowOffset);
  130. typedef OSStatus (*SSInquireBridgeWindowProc)(PCCardSocket *socket, PCCardWindow window, PCCardWindowState *windowState, PCCardWindowSize *windowSize, PCCardWindowAlign *windowAlign);
  131. typedef OSStatus (*SSGetBridgeWindowProc)(PCCardSocket *socket, PCCardWindow window, PCCardWindowState *windowState, PhysicalAddress *startAddress, PCCardWindowSize *windowSize);
  132. typedef OSStatus (*SSSetBridgeWindowProc)(PCCardSocket socket, PCCardWindow window, PCCardWindowState windowState, PhysicalAddress startAddress, PCCardWindowSize windowSize);
  133. typedef OSStatus (*SSGetInterruptSetMemberProc)(PCCardSocket socket, InterruptSetMember *interruptSetMember);
  134. typedef OSStatus (*SSEjectCardProc)(PCCardSocket socket);
  135.  
  136. enum {
  137.     kServiceTypePCCardAdapter    = 'sock',
  138.     kPCCardAdapterPluginVersion    = 0x00000001,
  139.     kPCCardAdapterPluginCurrentVersion = kPCCardAdapterPluginVersion
  140. };
  141.  
  142. struct PCCardAdapterPluginHeader {
  143.     UInt32                             version;
  144.     UInt32                             reserved1;
  145.     UInt32                             reserved2;
  146.     UInt32                             reserved3;
  147. };
  148. typedef struct PCCardAdapterPluginHeader PCCardAdapterPluginHeader;
  149.  
  150. struct PCCardAdapterPluginDispatchTable {
  151.     PCCardAdapterPluginHeader         header;
  152.  
  153.     SSValidateHardwareProc             validateHardware;
  154.  
  155.     SSInitializeProc                 initialize;
  156.     SSSuspendProc                     suspend;
  157.     SSResumeProc                     resume;
  158.     SSFinalizeProc                     finalize;
  159.  
  160.     SSInquireAdapterProc             inquireAdapter;
  161.     SSInquireSocketProc             inquireSocket;
  162.     SSGetSocketProc                 getSocket;
  163.     SSSetSocketProc                 setSocket;
  164.     SSResetSocketProc                 resetSocket;
  165.     SSGetStatusProc                 getStatus;
  166.     SSInquireWindowProc             inquireWindow;
  167.     SSGetWindowProc                 getWindow;
  168.     SSSetWindowProc                 setWindow;
  169.     SSGetWindowOffsetProc             getWindowOffset;
  170.     SSSetWindowOffsetProc             setWindowOffset;
  171.     SSInquireBridgeWindowProc         inquireBridgeWindow;
  172.     SSGetBridgeWindowProc             getBridgeWindow;
  173.     SSSetBridgeWindowProc             setBridgeWindow;
  174.     SSGetInterruptSetMemberProc     getInterruptSetMember;
  175.     SSEjectCardProc                 ejectCard;
  176. };
  177. typedef struct PCCardAdapterPluginDispatchTable PCCardAdapterPluginDispatchTable;
  178.  
  179. typedef PCCardAdapterPluginDispatchTable *PCCardAdapterPluginDispatchTablePtr;
  180. #endif
  181.  
  182. #pragma options align=reset
  183. #endif /* PRAGMA_ALIGN_SUPPORTED */
  184.  
  185. #if PRAGMA_IMPORT_SUPPORTED
  186. #pragma import off
  187. #endif
  188.  
  189. #ifdef __cplusplus
  190. }
  191. #endif
  192.  
  193. #endif /* __PCCARDADAPTERPLUGIN__ */
  194.  
  195.